home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung 2 / Power-Programmierung CD 2 (Tewi)(1994).iso / gnu / djgpp / src / gas-211 / gas / write.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-05-30  |  3.5 KB  |  109 lines

  1. /* write.h
  2.  
  3.    Copyright (C) 1987, 1992, 1993 Free Software Foundation, Inc.
  4.  
  5.    This file is part of GAS, the GNU Assembler.
  6.  
  7.    GAS is free software; you can redistribute it and/or modify
  8.    it under the terms of the GNU General Public License as published by
  9.    the Free Software Foundation; either version 2, or (at your option)
  10.    any later version.
  11.  
  12.    GAS is distributed in the hope that it will be useful,
  13.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.    GNU General Public License for more details.
  16.  
  17.    You should have received a copy of the GNU General Public License
  18.    along with GAS; see the file COPYING.  If not, write to
  19.    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  20.  
  21. #ifndef TC_I960
  22. #ifdef hpux
  23. #define EXEC_MACHINE_TYPE HP9000S200_ID
  24. #endif
  25. #endif /* TC_I960 */
  26.  
  27. #ifndef LOCAL_LABEL
  28. #ifdef DOT_LABEL_PREFIX
  29. #define LOCAL_LABEL(name) (name[0] =='.' \
  30.                && ( name [1] == 'L' || name [1] == '.' ))
  31. #else /* not defined DOT_LABEL_PREFIX */
  32. #define LOCAL_LABEL(name) (name [0] == 'L' )
  33. #endif /* not defined DOT_LABEL_PREFIX */
  34. #endif /* LOCAL_LABEL */
  35.  
  36. #define S_LOCAL_NAME(s) (LOCAL_LABEL(S_GET_NAME(s)))
  37.  
  38. #include "bit_fix.h"
  39.  
  40. /*
  41.  * FixSs may be built up in any order.
  42.  */
  43.  
  44. struct fix
  45.   {
  46.     /* These small fields are grouped together for compactness of
  47.        this structure, and efficiency of access on some architectures.  */
  48.     char fx_pcrel_adjust;    /* pc-relative offset adjust */
  49.     unsigned fx_pcrel : 1;    /* TRUE: pc-relative. */
  50.     unsigned fx_im_disp : 1;    /* TRUE: value is a displacement */
  51.     unsigned fx_bsr : 1;    /* sequent-hack */
  52.     /* TRUE if target is a 'callj' (used by i960) */
  53.     unsigned fx_callj : 1;
  54.     short int fx_size;        /* How many bytes are involved? */
  55.  
  56.     fragS *fx_frag;        /* Which frag? */
  57.     long fx_where;        /* Where is the 1st byte to fix up? */
  58.     symbolS *fx_addsy;        /* NULL or Symbol whose value we add in. */
  59.     symbolS *fx_subsy;        /* NULL or Symbol whose value we subtract. */
  60.     long fx_offset;        /* Absolute number we add in. */
  61.     struct fix *fx_next;    /* NULL or -> next fixS. */
  62.     bit_fixS *fx_bit_fixP;    /* IF NULL no bitfix's to do */
  63. #ifdef BFD_ASSEMBLER
  64.     bfd_reloc_code_real_type fx_r_type;
  65. #else
  66. #ifdef NEED_FX_R_TYPE
  67.     /* Hack for machines where the type of reloc can't be
  68.        worked out by looking at how big it is.  */
  69.     int fx_r_type;
  70. #endif
  71. #endif
  72.     long fx_addnumber;
  73.   };
  74.  
  75. typedef struct fix fixS;
  76.  
  77. #ifndef BFD_ASSEMBLER
  78. extern char *next_object_file_charP;
  79.  
  80. #ifndef MANY_SEGMENTS
  81. COMMON fixS *text_fix_root, *text_fix_tail;    /* Chains fixSs. */
  82. COMMON fixS *data_fix_root, *data_fix_tail;    /* Chains fixSs. */
  83. COMMON fixS *bss_fix_root, *bss_fix_tail;    /* Chains fixSs. */
  84. #endif
  85. COMMON fixS **seg_fix_rootP, **seg_fix_tailP;    /* -> one of above. */
  86. #endif
  87.  
  88. extern long string_byte_count;
  89. extern int section_alignment[];
  90.  
  91. bit_fixS *bit_fix_new PARAMS ((int size, int offset, long base_type,
  92.                    long base_adj, long min, long max, long add));
  93. void append PARAMS ((char **charPP, char *fromP, unsigned long length));
  94. void record_alignment PARAMS ((segT seg, int align));
  95. void write_object_file PARAMS ((void));
  96.  
  97. #ifdef BFD_ASSEMBLER
  98. fixS *fix_new PARAMS ((fragS * frag, int where, int size,
  99.                symbolS * add_symbol, symbolS * sub_symbol,
  100.                long offset, int pcrel,
  101.                bfd_reloc_code_real_type r_type));
  102. #else
  103. fixS *fix_new PARAMS ((fragS * frag, int where, int size,
  104.                symbolS * add_symbol, symbolS * sub_symbol,
  105.                long offset, int pcrel, int r_type));
  106. #endif
  107.  
  108. /* end of write.h */
  109.